﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using EstacionDePoder.Codigo;
using BLLEP.Funcionalidad;
using BLLEP;

namespace EstacionDePoder.Soporte
{
    public partial class ChatSoporte : FormGenerico
    {
        public int IdUsuario { get { return int.Parse(Request.QueryString["idUsuario"]); } }


        private void ValidarUsuario()
        {
            BLLUsuario bllUsuario = new BLLUsuario();
            EP_Usuario usuarioChat = bllUsuario.Traer(IdUsuario);
            EP_Usuario usuarioLogueado = bllUsuario.Traer(User.Identity.Name);

            if (usuarioLogueado.IdUsuario != usuarioChat.IdUsuario)
            {
                if (!new BLLRol().TraerRoles(User.Identity.Name).Contains("LordOfUniverse"))
                    Response.Redirect("/Default.aspx");
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                ValidarUsuario();
        }

        protected void btnEnviarMensaje_Click(object sender, EventArgs e)
        {
            if (txtMensaje.Text.Length > 0)
            {
                string mensaje = txtMensaje.Text.Substring(0, (txtMensaje.Text.Length > 200) ? 200 : txtMensaje.Text.Length);
                BLLChat bllChat = new BLLChat();
                bllChat.CargarMensaje(mensaje,User.Identity.Name, IdUsuario);
                bllChat.GuardarCambios();
                txtMensaje.Text = string.Empty;
                gvChat.DataBind();
            }
        }

        protected void gvChat_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            EP_Chat chat = e.Row.DataItem as EP_Chat;

            Label lblOrigen = e.Row.FindControl("lblOrigen") as Label;
            
            if(lblOrigen != null)
                lblOrigen.Text = new BLLUsuario().Traer(IdUsuario).Email + " - ";

            if (chat != null && chat.EsAdmin.Value)
            {
                Panel pnlFilaMensaje = e.Row.FindControl("pnlFilaMensaje") as Panel;
                pnlFilaMensaje.CssClass += " filaMensajeChatAdmin";

                Panel pnlCabeceraFilaMensaje = e.Row.FindControl("pnlCabeceraFilaMensaje") as Panel;
                pnlCabeceraFilaMensaje.CssClass = "filaMensajeChatCabeceraAdmin";

                lblOrigen.Text = "Admin - ";
            }
        }

        protected void tmrChat_Tick(object sender, EventArgs e)
        {
            gvChat.DataBind();
        }

        protected void odsChat_Selected(object sender, ObjectDataSourceStatusEventArgs e)
        {
            if (new BLLRol().TraerRoles(User.Identity.Name).Contains("LordOfUniverse"))
            {
                BLLChat bllChat = new BLLChat();
                bllChat.MarcarComoVistos(IdUsuario);
                bllChat.GuardarCambios();
            }
        }
    }
}